/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dio.com.dao;

import dio.com.dao.conexao.AcessoCM;
import dio.com.model.bean.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Diogenes
 */
public class MovimentosDAO {

    PreparedStatement pstm;
    ResultSet rs;
    String inserirMovimentacao = "INSERT INTO `controledeatividades`.`movimentacoes` "
            + " (`IMPOSTO_ID_IMPOSTO`, `PERIODO_idPERIODO`, `empresa_1_IDEMPRESA_PK_1`,"
            + " `VALOR`, `USUARIO_ULT_ALTERACAO`, `DATA`) VALUES (?,?,?,?,?,?)";
    String editarMovimentacao = "UPDATE `controledeatividades`.`movimentacoes`"
            + " SET `VALOR` = ?, `USUARIO_ULT_ALTERACAO` = ? , `DATA` = ?"
            + " WHERE `IMPOSTO_ID_IMPOSTO` = ? AND `PERIODO_idPERIODO` = ? "
            + " AND `empresa_1_IDEMPRESA_PK_1` = ?";
    String verificarMovimento = "SELECT PERIODO_idPERIODO "
            + " FROM controledeatividades.movimentacoes "
            + " WHERE IMPOSTO_ID_IMPOSTO = ? AND PERIODO_idPERIODO = ? AND empresa_1_IDEMPRESA_PK_1 = ?";
    String carregarMovimentacoes = "SELECT * "
            + " FROM controledeatividades.movimentacoes "
            + " WHERE PERIODO_idPERIODO = ? AND empresa_1_IDEMPRESA_PK_1 = ?";

    //IMPOSTO_ID_IMPOSTO = ? AND 
    
    public void inserirMovimentos(Movimento Movimento, AcessoCM mysql) {
        try {
            pstm = mysql.conectar().prepareStatement(inserirMovimentacao);
            pstm.setInt(1, Movimento.getImposto().getId());
            pstm.setInt(2, Movimento.getPeriodo().getId());
            pstm.setInt(3, Movimento.getEmpresa().getId());
            pstm.setString(4, Movimento.getValor());
            pstm.setString(5, Movimento.getUsuario().getNome());
            pstm.setDate(6, Movimento.getData());
            pstm.executeUpdate();
            mysql.commit();
            mysql.desconectar();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void editarMovimentos(Movimento Movimento, AcessoCM mysql) {
        try {
            pstm = mysql.conectar().prepareStatement(editarMovimentacao);
            pstm.setString(1, Movimento.getValor());
            pstm.setInt(2, Movimento.getUsuario().getId());
            pstm.setDate(3, Movimento.getData());
            pstm.setInt(4, Movimento.getImposto().getId());
            pstm.setInt(5, Movimento.getPeriodo().getId());
            pstm.setInt(6, Movimento.getEmpresa().getId());
            pstm.executeUpdate();
            mysql.commit();
            mysql.desconectar();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public boolean existeMovimentacao(Movimento Movimento, AcessoCM mysql) {
        try {
            pstm = mysql.conectar().prepareStatement(verificarMovimento);
            pstm.setInt(1, Movimento.getImposto().getId());
            pstm.setInt(2, Movimento.getPeriodo().getId());
            pstm.setInt(3, Movimento.getEmpresa().getId());
            rs = pstm.executeQuery();
            while (rs.next()) {
                mysql.desconectar();
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        mysql.desconectar();
        return false;
    }

    public List<Movimento> carregarMovimentos(Movimento movimento) {
        List<Movimento> Movimentos = new ArrayList<Movimento>();
        try {
            AcessoCM mysql = new AcessoCM();
            pstm = mysql.conectar().prepareStatement(carregarMovimentacoes);
//            pstm.setInt(1, movimento.getImposto().getId());
            pstm.setInt(1, movimento.getPeriodo().getId());
            pstm.setInt(2, movimento.getEmpresa().getId());
            rs = pstm.executeQuery();
            while (rs.next()) {
                Movimento movimentos2 = new Movimento();
                Periodo periodo = new Periodo();
                Imposto imposto = new Imposto();
                imposto.setId(rs.getInt("IMPOSTO_ID_IMPOSTO"));
                movimentos2.setValor(rs.getString("VALOR"));
                movimentos2.setPeriodo(periodo);
                movimentos2.setImposto(imposto);
                Movimentos.add(movimentos2);
            }
            mysql.desconectar();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return Movimentos;
    }
}
